package com.zsz.ba06;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;


@Component("myStudent")

//@Value简单类型的属性赋值(顶替了set（）方法)用的反射机制


public class Student {
    @Value(value ="赵书正" )
private String name;
    @Value(value = "20")
private Integer age;

    /**
     * 引用类型
     * @Resource:来自JDK的注解，spring框架提供了对这个注解的功能的支持，可以使用它给引用数据类型赋值
     *           使用的也是自耦丁注入的原理，它支持byName，byType。默认是byName
     *
     *
     *默认是使用byName，如果使用byName赋值失败，再使用byType
     *
     */
    @Resource
    private School school;

public Student() {
    System.out.println("==Student的无参构造方法调用了。==");
}

public void setName(String name) {
    this.name = name;
}

@Value("25")
public void setAge(Integer age) {
    System.out.println("setAge:"+age);
    this.age = age;
}

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school=" + school +
                '}';
    }
}
